package com.sqlcheck.service;

import com.sqlcheck.dto.request.LoginRequest;
import com.sqlcheck.dto.response.LoginResponse;
import com.sqlcheck.dto.response.CurrentUserResponse;
import com.sqlcheck.entity.User;

/**
 * 认证服务接口
 */
public interface AuthService {

    /**
     * 员工登录
     * 
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    LoginResponse login(LoginRequest loginRequest);

    /**
     * 根据token获取当前用户信息
     * 
     * @param token 访问令牌
     * @return 用户信息
     */
    CurrentUserResponse getCurrentUser(String token);

    /**
     * 验证token是否有效
     * 
     * @param token 访问令牌
     * @return 是否有效
     */
    boolean validateToken(String token);

    /**
     * 从token中解析用户ID
     * 
     * @param token 访问令牌
     * @return 用户ID
     */
    Long getUserIdFromToken(String token);

    /**
     * 生成访问令牌
     * 
     * @param user 用户实体
     * @return 访问令牌
     */
    String generateToken(User user);

    /**
     * 退出登录（可选实现）
     * 
     * @param token 访问令牌
     */
    void logout(String token);
}